package com.class5.springboot.frame.repo.entity;

import java.util.HashMap;

import java.util.Map;

import com.fasterxml.jackson.annotation.JsonIgnore;

public abstract class SuperEntity {
    //存放修改前原始数据
    private Map<String, Object> originalData;
    @JsonIgnore
    public Map<String, Object> getOriginalData() {
        return originalData;
    }
    /**
     * 供子类调用缓存修改前的数据
     * @param column
     * @param value
     */
    protected void addOriginalData(String column, Object oldValue, Object newValue){
        if(originalData == null){
            originalData = new HashMap<String, Object>();
        }
        if(!originalData.containsKey(column)){
            //未修改不作处理
            if(newValue != null && newValue.equals(oldValue)){
                return;
            }
            if(oldValue != null && oldValue.equals(newValue)){
                return;
            }
            //保存原始数据
            originalData.put(column, oldValue);
        }

    }
    /**
     * 当前实体对象是否有修改
     * @return
     */
    @JsonIgnore
    public boolean isModified(){
        return originalData != null && !originalData.isEmpty();
    }
    /**
     * 检查数据库的某列是否有改变
     * @param colName
     * @return
     */
    public boolean isModified(String colName) {
        return originalData != null && originalData.containsKey(colName);
    }
}